import 'package:flutter/material.dart';
import 'package:flutter_enjoy_plus/pages/mine/index.dart';
import 'package:flutter_enjoy_plus/utils/EventBus.dart';

import '../utils/TokenManager.dart';
import 'home/index.dart';

class TabsPage extends StatefulWidget {
  const TabsPage({super.key});

  @override
  TabsPageState createState() => TabsPageState();
}

class TabsPageState extends State<TabsPage> {
  List tabList = [
    {
      'label': '首页',
      'icon': 'assets/tabs/home_default.png',
      'activeIcon': 'assets/tabs/home_active.png',
    },
    {
      'label': '我的',
      'icon': 'assets/tabs/my_default.png',
      'activeIcon': 'assets/tabs/my_active.png',
    }
  ];

  int _activeIndex = 0;

  changeIndex(int index) {
    setState(() {
      _activeIndex = index;
    });
  }

  // 方案1： 通过判断来获取tabs内容
  // getTabContent() {
  //   if (_activeIndex == 0) {
  //     return const HomePage();
  //   } else if (_activeIndex == 1) {
  //     return MinePage(activeIndex: _activeIndex);
  //   }
  // }

  // 方案2： 通过IndexedStack来获取tabs内容，能够缓存页面，避免重新加载
  // getTabContent() {
  //   return IndexedStack(
  //     index: _activeIndex,
  //     children: [
  //       const HomePage(),
  //       const MinePage(),
  //     ],
  //   );
  // }

  // 获取底部导航栏的item
  getBottomNavigationBarItems() {
    return tabList.map((item) {
      return BottomNavigationBarItem(
        icon: Image.asset(
          item['icon'],
          width: 30,
          height: 30,
        ),
        activeIcon: Image.asset(
          item['activeIcon'],
          width: 30,
          height: 30,
        ),
        label: item['label'],
      );
    }).toList();
  }

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    // 初始化token
    tokenManager.init();
    // 订阅事件
    registerEventBus();
  }

  // 订阅登录失效事件
  registerEventBus() {
    eventBus.on<logoutEvent>().listen((event) {
      Navigator.pushNamed(context, '/login');
    });
  }

  @override
  Widget build(BuildContext context) {
    // 脚手架
    return Scaffold(
      // SafeArea 手机端的安全区域
      body: SafeArea(
        // child: getTabContent(),
        child: IndexedStack(
          index: _activeIndex,
          children: [
            const HomePage(),
            MinePage(activeIndex: _activeIndex, changeIndex: changeIndex)
          ],
        ),
      ),
      bottomNavigationBar: BottomNavigationBar(
        // 底部导航栏的item
        items: getBottomNavigationBarItems(),
        // 当前选中的索引
        currentIndex: _activeIndex,
        // 选中样式
        selectedItemColor: const Color.fromRGBO(85, 145, 175, 1),
        // 未选中样式
        unselectedItemColor: Colors.black,
        // 底部导航栏的样式
        type: BottomNavigationBarType.fixed,
        // 底部导航栏的背景色
        // backgroundColor: Colors.white,
        // 底部导航栏的边框
        // elevation: 0,
        // 底部导航栏的边距
        // 点击事件
        onTap: (index) {
          setState(() {
            _activeIndex = index;
          });
        },
      ),
    );
  }
}
